<?php

class apartamenteActions extends myActions
{
  public function executeIndex(sfWebRequest $request)
  {
    // incarc lista cu blocuri
    $this->blocuri = BlocPeer::getBlocuri();

    if (count($this->blocuri) == 0)
    {
      // daca nu exista blocuri definite, se afiseaza formularul pentru completarea blocurilor si a scarilor
      $component = 'emptyBlocuri';
      $arguments = array();
    }
    else
    {
      // daca exista blocuri definite, acestea se afiseaza sub forma de tab-uri
      $component = 'blocuri';
      $arguments = array('blocuri' => $this->blocuri);
    }

    $this->component = $component;
    $this->arguments = $arguments;

  }

  /**
   * Adauga blocuri, impreuna cu scarile corespondente
   *
   * @param sfWebRequest $request
   */
  public function executeXAddBlocuri(sfWebRequest $request)
  {
    return $this->formRequest($request, new EmptyBlocListForm(), 'blocuri');
  }

  /**
   * Afiseaza continutul unui bloc
   * @param sfWebRequest $request
   */
  public function executeXBloc(sfWebRequest $request)
  {
    if (!$request->isXmlHttpRequest())
    {
      return sfView::NONE;
    }

    return $this->renderComponent('apartamente', 'blocContent', array('id' => $request->getParameter('id')));
  }

  /**
   * Afiseaza continutul unei scari
   * @param sfWebRequest $request
   */
  public function executeXScara(sfWebRequest $request)
  {
    if (!$request->isXmlHttpRequest())
    {
      return sfView::NONE;
    }

    return $this->renderComponent('apartamente', 'scaraContent', array('id' => $request->getParameter('id')));
  }

  public function executeXScaraInfo(sfWebRequest $request)
  {
    $scara_id = $request->getParameter('id');
    $Scara = ScaraPeer::retrieveByPK($scara_id);
    if (!$Scara)
    {
      return sfView::NONE;
    }

    return $this->formRequest($request, new ScaraInfoForm($Scara), 'scaraApartamente', array('Scara' => $Scara));
  }

  /**
   * Adauga apartamente la o scara
   *
   * @param sfWebRequest $request
   */
  public function executeXAddNewApartamente(sfWebRequest $request)
  {
    $scara_id = $request->getParameter(NewApartamentListForm::NAME);
    $scara_id = $scara_id['id'];
    $Scara = ScaraPeer::retrieveByPK($scara_id);
    if (!$Scara)
    {
      $error = 'ID-ul scării este incorect.';

      return $this->sendError($error, true);
    }

    return $this->formRequest($request, new NewApartamentListForm($Scara), 'apartamenteFormList', array('Scara' => $Scara));
  }

  /**
   *
   * @param int $scara_id
   */
  public function executeXCancelAddApartamente(sfWebRequest $request)
  {
    $scara_id = $request->getParameter('scara_id');
    $Scara = ScaraPeer::retrieveByPK($scara_id);
    if (!$Scara)
    {
      $error = 'ID-ul scării este incorect.';

      return $this->sendError($error, true);
    }

    return $Scara->cancelAddApartamente() ?
        $this->renderComponent('apartamente', 'addApartamente', array('scara_id' => $scara_id)) :
        sfView::NONE;
  }

}
